//  awords in main
// disparo de las espadas


int sword_speed  = 8;                                                           //this is the fastest weapon  
 
void crea_sword()
{
    sword.createxturas ("sprites/sword.dat");
    /* clear sword coordinate array */
    for (int i=0;i<6;i++)
    {
        swords[i].x=0;    //  x 
        swords[i].y=0;
        swords[i].activo=false;
    }
}    
void sword_fire()
{
   static int iTmpDisparo;                                                      // variable para calcular el tiempo
   int firedelay=350;
   if ( (SDL_GetTicks() - iTmpDisparo) < firedelay)  return;                    // sale si es menor, velocidad de disparo en 350
   iTmpDisparo = SDL_GetTicks();                                                // averigua el tiempo transcurrido
   for (int i=0;i<6;i++)
    if (swords[i].activo==false)                                                       // si es 0 deja disparar
       {
         Scuchillo.play();
         swords[i].y=int(popolon.y)-32;                                         //y
         swords[i].x=int(popolon.x)+8;                                          // x
         swords[i].activo=true;                                                 // activa el sprite
         break;                                                                 // sale del bucle
        }                     
}
void sword_move (double mappos)
{ 
  SDL_Rect recta;
  SDL_Rect rectb;
  for (int i=0;i<6;i++)
    if (swords[i].activo==true) 
    {
     if (swords[i].y>-1)
      swords[i].y-=sword_speed;// dec y
       else
        {
          swords[i].activo=false;
          continue;
        }                       
     
     switch (arma)
       {
        case 6: sword.y=swords[i].y;
                sword.x=swords[i].x;
                sword.pinta();
                sword.rect.w=8;
                break;
        case 7: sword.y=swords[i].y;
                sword.x=swords[i].x-10;
                sword.pinta();
                sword.y=swords[i].y;
                sword.x=swords[i].x+10;
                sword.pinta();
                sword.rect.w=24;
                break;
       }
        /* colision con medussa */
    if (medusaestado==1)
      if (sword.collision(&medhead.rect))
            {
                swords[i].activo=false;
                medusavida--;
                Sbosshit.play();
            }
    if (muerteestado==1)
        if (sword.collision(&deathhead.rect))
            {
                swords[i].activo=false;
                muertevida--;
                Sbosshit.play();
            }
            
     /* Weapon option */     
    if (optionw.visible==true) 
          if (sword.collision(&optionw.rect))                                     
           {
            if (woptiondir<1) woptiondir=1;
            else woptiondir=-1;
            Soptionclik.play();
            if (optionw.animpos<2) optionw.animpos=2.0;                         
            else optionw.animpos+=1;
            if (arma==6 && optionw.animpos==6) optionw.animpos=7;               // si son cuchillos
            if (optionw.animpos==9) optionw.animpos=0;               // si son flechas de fuego
            if (optionw.animpos==3) optionw.animpos=4;               // si son cuchillos
            if (optionw.animpos==9) optionw.animpos=0;               // si son flechas de fuego
            if (optionw.animpos>9) optionw.animpos=0;
            swords[i].activo=false; // desactiva sprite 
           } // if       
      /* collison with option */
    if (option.visible==true)
       if (sword.collision(&option.rect))                                     
           {
             if (optiondir<1) optiondir=1;
             else optiondir=-1;
             Soptionclik.play();
             option.animpos+=1;
             if (option.animpos>4) option.animpos=0;
             option.animstart=int(option.animpos);
             swords[i].activo=false; // desavtiva sprite  
            }                                                                        


     /* chequea colisiones */  
       for (int a=0;a<6;a++)    // use the same for for all arrays of size 6
       {
       if (swords[i].activo==true)                                                // meuve solo las flechhas que esten activas
       {
        switch (arma)
        {
         case 6: recta.x=swords[i].x;recta.y=swords[i].y;                       // single
                 recta.w=8;recta.h=32;break;                     
         case 7: recta.x=swords[i].x-10;recta.y=swords[i].y;                    // double
                 recta.w=18;recta.h=32;break;                 
        }
        /* colision con nubes */
        if (a<3 && cloudss[a].hit==false)                                             
        {
            rectb.x=int(cloudss[a].x);rectb.w=clouds.w;
            rectb.y=int(cloudss[a].y);rectb.h=clouds.h;
            if (sword.colbox(&recta,&rectb))
            {
                Sras.play();
                cloudss[a].hit=true;
                cloudss[a].dir=0;
                if (cloudss[a].x>(popolon.x)+10) cloudss[a].dir=-((cloudss[a].x / popolon.x)  );
                if (cloudss[a].x<(popolon.x)-10) cloudss[a].dir= (popolon.x /cloudss[a].x) ;
            }
        } /* clouds collision check end */        
        /* bats */ 
        if (batss[a].activo==true)
        {
         rectb.x=int(batss[a].x);rectb.y=int(batss[a].y);rectb.w=32;rectb.h=32; 
         if (sword.colbox(&recta,&rectb))                                        // if collision exists 
          {
           Sras.play();
           for (int b=0;b<128;b++) 
            if (rass[b].activo==false) 
             {
               rass[b].activo=true;
               rass[b].y=swords[i].y-recta.h;                                   // ras y position = arrowposy- sprite.h
               rass[b].x=swords[i].x-recta.w;                                   // x
               break;
              }
            batss[a].activo=false;                                                     // clear bat in pos
            swords[i].activo=false;                                              // clear arrow in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* end check */
        if (batss_zz[a].activo==true)
        {
         rectb.x=int(batss_zz[a].x);rectb.y=int(batss_zz[a].y);rectb.w=32;rectb.h=32; 
         if (sword.colbox(&recta,&rectb))                                        // if collision exists 
          {
           Sras.play();
           for (int b=0;b<128;b++) 
            if (rass[b].activo==false) 
             {
               rass[b].activo=true;
               rass[b].y=swords[i].y-recta.h;                                   // ras y position = arrowposy- sprite.h
               rass[b].x=swords[i].x-recta.w;                                   // x
               break;
              }
            batss_zz[a].activo=false;                                                     // clear bat in pos
            swords[i].activo=false;                                              // clear arrow in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* end check */
        if (batss_spl[a].activo==true)
        {
         rectb.x=int(batss_spl[a].x);rectb.y=int(batss_spl[a].y);rectb.w=32;rectb.h=32; 
         if (sword.colbox(&recta,&rectb))                                        // if collision exists 
          {
           Sras.play();
           for (int b=0;b<128;b++) 
            if (rass[b].activo==false) 
             {
               rass[b].activo=true;
               rass[b].y=swords[i].y-recta.h;                                   // ras y position = arrowposy- sprite.h
               rass[b].x=swords[i].x-recta.w;                                   // x
               break;
              }
            batss_spl[a].activo=false;                                                     // clear bat in pos
            swords[i].activo=false;                                              // clear arrow in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* end check */         
        if (batss_spr[a].activo==true)
        {
         rectb.x=int(batss_spr[a].x);rectb.y=int(batss_spr[a].y);rectb.w=32;rectb.h=32; 
         if (sword.colbox(&recta,&rectb))                                        // if collision exists 
          {
           Sras.play();
           for (int b=0;b<128;b++) 
            if (rass[b].activo==false) 
             {
               rass[b].activo=true;
               rass[b].y=swords[i].y-recta.h;                                   // ras y position = arrowposy- sprite.h
               rass[b].x=swords[i].x-recta.w;                                   // x
               break;
              }
            batss_spr[a].activo=false;                                                     // clear bat in pos
            swords[i].activo=false;                                              // clear arrow in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* end check */
        if (bones[a].activo==true)
        {
         /* bugs rect */
         rectb.x=int(bones[a].x);
         rectb.y=int(bones[a].y);
         rectb.w=32;
         rectb.h=32;    
         /* check colision */      
         if (sword.colbox(&recta,&rectb) && bones[a].assm==true)                                     
          {
            bones[a].hit++;
            bones[a].assm=false;
            bones[a].head=bones[a].x;
            bones[a].body=bones[a].x;
            swords[i].activo=false;                                            // desactiva la flecha
            if (bones[a].hit==3)  // MAX HITS 
            {
                Sras.play();
                for (int b=0;b<128;b++) 
                 if (rass[b].activo==false) 
                 {
                  rass[b].activo=true;
                  rass[b].y=int(bones[a].y);
                  rass[b].x=int(bones[a].x);
                  break;
                 }
                bones[a].activo=false;
                bones[a].hit=0;                                                                                               
                puntos+=100;
            }
          } // if  sword     
         } // if bones
        if (bugs[a].activo==true)
        {
         /* bubles */ 
         rectb.x=bugs[a].x;rectb.y=bugs[a].y;rectb.w=32;rectb.h=32;    
          if (sword.colbox(&recta,&rectb))                                     
          {
            Sras.play();
            for (int b=0;b<128;b++) 
             if (rass[b].activo==false) 
              {
               rass[b].activo=true;
               rass[b].y=bugs[a].y;
               rass[b].x=bugs[a].x;
               break;
              }
           bugs[a].dir=0;
           bugs[a].activo=false;
           swords[i].activo=false;  // desactiva sprite 
           puntos+=100;                                                   
          } // if
        } /*check end */
        if (bubless[a].activo==true)
        {
         /* bubles */ 
         rectb.x=bubless[a].x;rectb.y=bubless[a].y;rectb.w=32;rectb.h=32;    
          if (sword.colbox(&recta,&rectb))                                     
          {
            Sras.play();
            for (int b=0;b<128;b++) 
             if (rass[b].activo==false) 
              {
               rass[b].activo=true;
               rass[b].y=bubless[a].y;
               rass[b].x=bubless[a].x;
               break;
              }
            bubless[a].activo=false;
           swords[i].activo=false;  // desactiva sprite 
           puntos+=100;                                                   
          } // if
        } /*check end */
     /* collision with Knights */
     if (knights[a].activo==true)
     {
      rectb.x=knights[a].x;rectb.y=knights[a].y;rectb.w=32;rectb.h=32; 
      if (option.colbox(&recta,&rectb))                                     
        {
          Sescudo.play();
          swords[i].activo=false;                                                // turn off arrow sprite      
          knights[a].hits+=1;                                                      // inc knight hits
          if (knights[a].hits>3)
          {
           for (int b=0;b<128;b++) 
            if (rass[b].activo==false) 
             {
              rass[b].activo=true;
              rass[b].y=knights[a].y; // x ras position
              rass[b].x=knights[a].x; // y ras position
              break;
             }
            puntos+=500;
            knights[a].activo=false;                                                   // turn sprite off
            knights[a].hits=0;                                                     // resert hit counter      
           }// if end
        } // if   
       }
      } /* check end */
     } // for
    } //else swords[i].activo=false;                                              // turn sprite off
}    
